#ifndef __IIC_SOFTWARE_H__
#define __IIC_SOFTWARE_H__

#define USE_SOFTWARE_IIC   // 使用软件IIC（注：软件IIC和硬件IIC只能同时使用一种）

#ifdef USE_SOFTWARE_IIC
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"

// IIC SCL引脚配置
#define IIC_SCL_CLOCK   RCC_APB2Periph_GPIOB     // 时钟
#define IIC_SCL_PORT    GPIOB                    // 端口
#define IIC_SCL_PIN     GPIO_Pin_12               // 引脚号
// IIC SCL电平设置
#define SET_IIC_SCL(s)  s > 0 ? GPIO_SetBits(IIC_SCL_PORT, IIC_SCL_PIN) : GPIO_ResetBits(IIC_SCL_PORT, IIC_SCL_PIN)

// IIC SDA引脚配置
#define IIC_SDA_CLOCK   RCC_APB2Periph_GPIOB     // 时钟
#define IIC_SDA_PORT    GPIOB                    // 端口
#define IIC_SDA_PIN     GPIO_Pin_13               // 引脚号
// IIC SDA电平设置
#define SET_IIC_SDA(s)  s > 0 ? GPIO_SetBits(IIC_SDA_PORT, IIC_SDA_PIN) : GPIO_ResetBits(IIC_SDA_PORT, IIC_SDA_PIN)  
#define READ_IIC_SDA    GPIO_ReadInputDataBit(IIC_SDA_PORT, IIC_SDA_PIN)

void iic_init(void);
uint8_t iic_write_bytes(uint8_t addr, uint8_t *buf, uint8_t buf_size);
uint8_t iic_receive_bytes(uint8_t addr, uint8_t *buf, uint8_t buf_size);
#endif
#endif
